/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui;

import java.awt.Color;
import java.awt.event.ActionEvent;
import javax.swing.JButton;

/**
 *
 * @author Jose Gabriel
 */
public class BotonBoleto extends JButton { 
    
    private boolean pressed=false;
    private int status;
    logic.Boleto boleto;
    GUI gui;
    
        
    public BotonBoleto(logic.Boleto boleto, GUI gui) {
        this.boleto = boleto;
        this.gui = gui;
        if(boleto.getNroTicket()<10){
            this.setText("0"+this.boleto.getNroTicket());
        }else{
            this.setText(this.boleto.getNroTicket()+"");
        }
       setColor(boleto.getStatus());      
    }
    
    
    /**
     * Setea el color del boleto de acuerdo al estado que recibe.
     * (1 = Disponible, 2 = Reservado, 3 = Pagado)
     * @param status 
     */
    public void setColor(int status){
        switch(status){
            case 1: // Disponible
                this.setBackground(Color.green);
                break;
            case 2: // Reservado
                this.setBackground(Color.pink);
                break;
            case 3: // Pagado
                this.setBackground(Color.gray);
                break; 
        }
        this.status = status;
        if(this.boleto.isGanador()){
            this.setBackground(Color.orange);
        }
    }
    
    /**
     * Agrega un ActionListener que ejecuta el método evento.
     */
    public void iniciar(){
        this.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                evento(evt);
            }
        });
    }
    
    /**
     * 
     * @param event 
     */
    public void evento(ActionEvent event){
        
        if(pressed==false){
            pressed=true;
            this.setBackground(Color.white);
            this.gui.getPanelInfoCliente().setVisible(true);
        }else{
            pressed = false;
            setColor(this.status);
            gui.getPanelInfoCliente().setVisible(false);
        }
        if(this.status !=1){
            gui.getPanelInfoCliente().setData((logic.Cliente)this.gui.getCliente().getObject(this.boleto.getIdComprador()), this.boleto);
        }else{
            gui.getPanelInfoCliente().setData(this.boleto);
        }
    }

    /**
     * Indica si el boton del boleto se encuentra presionado (true) o no presionado (falso)
     * @return presionado (Tipo boolean)
     */
    public boolean isPressed() {
        return pressed;
    }
    
    /**
     * Retira la seleccion del boton, seteando su valor en falso.
     */
    public void letUpButton(){
        pressed = false;
    }

    /**
     * Retorna el valor en entero equivalente al estado del boton
     * (1 = Disponible, 2 = Reservado, 3 = Pagado)
     * @return estatus (tipos entero)
     */
    public int getStatus() {
        return status;
    }
}
